aviutl2\generic\binding/
mod.rs

1use crate::common::{AnyResult, AviUtl2Info};
2
3/// 汎用プラグインの情報を表す構造体。
4#[derive(Debug, Clone)]
5pub struct FilterPluginTable {
6    /// プラグインの情報。
7    /// 「プラグイン情報」ダイアログで表示されます。
8    pub information: String,
9}
10
11/// 汎用プラグインのトレイト。
12/// このトレイトを実装し、[`crate::register_generic_plugin!`] マクロを使用してプラグインを登録します。
13pub trait GenericPlugin: Send + Sync + Sized {
14    /// プラグインを初期化する。
15    fn new(info: AviUtl2Info) -> AnyResult<Self>;
16
17    /// プラグインをホストに登録する。
18    fn register(&mut self, registry: &mut self::host_app::HostAppHandle);
19
20    /// プロジェクトファイルのロードを処理する。
21    ///
22    /// プロジェクトの初期化時にも呼ばれます。
23    fn on_project_load(&mut self, _project: &mut crate::generic::ProjectFile) {}
24
25    /// プロジェクトファイルをセーブする直前に呼ばれる。
26    fn on_project_save(&mut self, _project: &mut crate::generic::ProjectFile) {}
27
28    /// 「キャッシュを破棄」が呼ばれたときに呼ばれる。
29    fn on_clear_cache(&mut self, _edit_section: &crate::generic::EditSection) {}
30
31    /// シーンを変更した直後に呼ばれる。
32    fn on_change_scene(&mut self, _edit_section: &crate::generic::EditSection) {}
33
34    /// シングルトンインスタンスを参照するためのヘルパーメソッド。
35    ///
36    /// # Panics
37    ///
38    /// プラグインが初期化されていない場合や、二重に呼び出された場合にパニックします。
39    fn with_instance<R>(f: impl FnOnce(&Self) -> R) -> R
40    where
41        Self: crate::generic::__bridge::GenericSingleton,
42    {
43        <Self as crate::generic::__bridge::GenericSingleton>::with_instance(f)
44    }
45
46    /// シングルトンインスタンスを可変参照するためのヘルパーメソッド。
47    ///
48    /// # Panics
49    ///
50    /// プラグインが初期化されていない場合や、二重に呼び出された場合にパニックします。
51    fn with_instance_mut<R>(f: impl FnOnce(&mut Self) -> R) -> R
52    where
53        Self: crate::generic::__bridge::GenericSingleton,
54    {
55        <Self as crate::generic::__bridge::GenericSingleton>::with_instance_mut(f)
56    }
57}
58
59mod project;
60pub use project::*;
61mod edit_section;
62pub use edit_section::*;
63mod host_app;
64pub use host_app::*;